//
// Created by ibelikov on 16.12.19.
//

//---------------------------------------------------------------------------
//
//                                3 Band EQ :)
//
// EQ.H - Header file for 3 band EQ
//
// (c) Neil C / Etanza Systems / 2K6
//
// Shouts / Loves / Moans = etanza at lycos dot co dot uk
//
// This work is hereby placed in the public domain for all purposes, including
// use in commercial applications.
//
// The author assumes NO RESPONSIBILITY for any problems caused by the use of
// this software.
//
//----------------------------------------------------------------------------

#ifndef __EQ3BAND__
#define __EQ3BAND__


// ------------
//| Structures |
// ------------

typedef struct
{
    // Filter #1 (Low band)

    double  lf;       // Frequency
    double  f1p0;     // Poles ...
    double  f1p1;
    double  f1p2;
    double  f1p3;

    // Filter #2 (High band)

    double  hf;       // Frequency
    double  f2p0;     // Poles ...
    double  f2p1;
    double  f2p2;
    double  f2p3;

    // Sample history buffer

    double  sdm1;     // Sample data minus 1
    double  sdm2;     //                   2
    double  sdm3;     //                   3

    // Gain Controls

    double  lg;       // low  gain
    double  mg;       // mid  gain
    double  hg;       // high gain

} EQSTATE;


// ---------
//| Exports |
// ---------

extern void   init_3band_state(EQSTATE* es, int lowfreq, int highfreq, int mixfreq);
extern double do_3band(EQSTATE* es, double sample);


#endif // #ifndef __EQ3BAND__
//---------------------------------------------------------------------------